package Management;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import paquetes.negocioVO.ProveedorVO;
import paquetes.negocioVO.ViajeVO;
import Entities.Viaje;
import bean.dao.ClienteDAO;
import bean.dao.ViajeDAO;

public class ManagementViaje {
	
private static ManagementViaje instancia;
	
	public static ManagementViaje getInstancia(){
		if(instancia == null)
			instancia = new ManagementViaje();
		return instancia;
	}
	
	public ViajeVO ViajeEntitieAVO(Viaje viaje) {
		
		ViajeVO viajeVO = new ViajeVO();
		viajeVO.setFechaSalidaRequerida(viaje.getFechaSalidaRequerida());
		viajeVO.setFechaSalidaEfectiva(viaje.getFechaSalidaEfectiva());
		viajeVO.setFechaLlegadaEstimada(viaje.getFechaLlegadaEstimada());
		viajeVO.setFechaLlegadaEfectiva(viaje.getFechaLlegadaEfectiva());

		return viajeVO;
	}
	
	public Viaje VoAEntitie(ViajeVO viajeVO){
		Viaje viaje = new Viaje();
		viaje.setFechaSalidaRequerida(viajeVO.getFechaSalidaRequerida());
		viaje.setFechaSalidaEfectiva(viajeVO.getFechaSalidaEfectiva());
		viaje.setFechaLlegadaEstimada(viajeVO.getFechaLlegadaEstimada());
		viaje.setFechaLlegadaEfectiva(viajeVO.getFechaLlegadaEfectiva());
		return viaje;
	}

	public void guardarViaje(Date FechaSalidaRequerida,Date FechaSalidaEfectiva,Date FechaLlegadaEstimada,Date FechaLlegadaEfectiva) {
		Viaje viaje = new Viaje();
		ViajeDAO miViajeDAO = new ViajeDAO();
		
		viaje.setFechaSalidaRequerida(FechaSalidaRequerida);
		viaje.setFechaSalidaEfectiva(FechaSalidaEfectiva);
		viaje.setFechaLlegadaEstimada(FechaLlegadaEstimada);
		viaje.setFechaLlegadaEfectiva(FechaLlegadaEfectiva);	
		miViajeDAO.guardarViaje(viaje);
	
	}


	public void bajaViaje(int id) {
		ViajeDAO miViajeDAO = new ViajeDAO();
		miViajeDAO.bajaViaje(id);
	}

	public List<ViajeVO> getViajes() {
		try {
			ViajeDAO viaje = new ViajeDAO();
			List<Viaje> viajes = viaje.getViajes();
			List<ViajeVO> viajesVO = new ArrayList<ViajeVO>();
			for (int i=0;i<viajes.size();i++)
			{
				ViajeVO c = this.ViajeEntitieAVO(viajes.get(i));
				viajesVO.add(c);
			}
			return viajesVO;
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public ViajeVO dameCliente(int id) {
		try {
			ViajeDAO viaje = new ViajeDAO();
			Viaje ch = viaje.getViaje(id);
			if (ch==null)
				return null;
			ViajeVO v = this.ViajeEntitieAVO(ch);
			return v;
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	
	public void programarInterSucursal(int sucOrig, Date fecha, int sucDest,
			int idVeh, int[] pedidos, int idEmp)
	{
		ViajeDAO.getInstancia().programarInterSucursal(sucOrig, fecha, sucDest, idVeh, pedidos, idEmp);
	}
	
	public void programarEntregaCarrier(int suc, Date fecha, String ruta,
			int tiempo, int km, int idVeh, int[] pedidos, int idEmp,
			ProveedorVO pc)
	{
		
	}
	
	public void programarEntregaEnDomicilio(int suc, Date fecha, String ruta,
			int tiempo, int km, int idVeh, int[] cargas, int idEmp) {
		ViajeDAO.getInstancia().programarEntregaEnDomicilio(suc, fecha, ruta, tiempo, km, idVeh, cargas, idEmp);
	}

}
